package com.epoch.zuul.auth.dao;

import com.epoch.zuul.auth.role.CsRole;
import com.epoch.zuul.auth.role.Roles;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Set;

/**
 * @author admin
 */
@Mapper
@Repository
public interface CsRoleDao {

    /**
     * get cs's role by csId
     * @param csId
     * @return
     */
    CsRole getRoleId(@Param("csId") String csId);
    /**
     * update cs's role by csId,roleId,currentCsId
     * @param currentCsId
     * @param csId
     * @param roleId
     * @return
     */
    void updateCsRole(@Param("currentCsId") String currentCsId, @Param("csId") String csId, @Param("roleId") String roleId);

    /**
     * 根据用户账号获取用户的角色
     * @param csPhone
     * @return
     */
    List<Roles> getRolesByCsPhone(@Param("csPhone") String csPhone);

    Set<String> getRoleNameByCsPhone(@Param("csPhone") String csPhone);

    /**
     * 给用户 赋角色
     * @param csId
     * @param roleId
     * @return
     */
    int grantToCs(@Param("csId") Integer csId, @Param("roleId") Integer roleId);

    /**
     * 通过用户的csPhone获取用户的所有权限
     * @param csPhone
     * @return
     */
    Set<String> getAllAuthByCsPhone(@Param("csPhone") String csPhone);

    /**
     * 修改用户身份
     * @param csId
     * @param roleName
     * @return
     */
    int updateCsRoleByRoleName(@Param("csId") String csId, @Param("roleName") String roleName);

    /**
     * 获取用户身份
     * @param csId
     * @return
     */
    String getRoleByCsId(@Param("csId") Integer csId);

    /**
     * 修改用户的身份
     * @param csId
     * @param roleId
     * @return
     */
    int updateCsRoleByCsIdRoleId(@Param("csId") Integer csId, @Param("roleId") Integer roleId);

}
